package com.oa.ylms.apps.dao.account;

import java.util.List;

import com.oa.ylms.apps.entity.account.AccountCheckValue;
import com.oa.ylms.apps.entity.account.AccountInfoValue;

public interface IAccountInfoDao {
	/**
	 * 添加一条出入帐信息
	 * 
	 * @param accountInfo
	 * @return
	 * @throws Exception
	 */
	public int addAccountInfo(AccountInfoValue accountInfo) throws Exception;

	/**
	 * 分页查询出入帐信息(支持根据出入帐查询)
	 * 
	 * @param accountInfo
	 * @param rows
	 * @param pageNo
	 * @return
	 * @throws Exception
	 */
	public List<AccountInfoValue> queryAccountInfoWithPage(
			AccountInfoValue accountInfo, int rows, int pageNo)
			throws Exception;

	/**
	 * 分页页数
	 * 
	 * @param accountInfo
	 * @param rows
	 * @return
	 * @throws Exception
	 */
	public int countTpages(AccountInfoValue accountInfo, int rows)
			throws Exception;

	/**
	 * 根据带账单ID的对象得到整个账单信息
	 * 
	 * @param accountInfo
	 * @return
	 * @throws Exception
	 */
	public AccountInfoValue queryById(AccountInfoValue accountInfo)
			throws Exception;

	/**
	 * 修改账单信息
	 * 
	 * @param accountInfo
	 * @return
	 * @throws Exception
	 */
	public boolean modifyAccountInfo(AccountInfoValue accountInfo)
			throws Exception;

	

	/**
	 * 审批人员权限：查询需要审批的账单信息(支持按照出入帐类型查询)
	 * 
	 * @param accountInfo
	 * @return
	 * @throws Exception
	 */
	public List<AccountInfoValue> queryAccountCheck(AccountInfoValue accountInfo)
			throws Exception;

	/**
	 * 支持多条件查询，进行财务分析时适用
	 * 
	 * @param inOrOut
	 * @param startDate
	 * @param endDate
	 * @param title
	 * @param posters
	 * @param state
	 * @return
	 * @throws Exception
	 */
	public List<AccountInfoValue> queryAccountInfo(String inOrOut,
			String startDate, String endDate, String title, String posters,
			String state) throws Exception;

	/**
	 * 备用方法：把几条数据封装成了对象。
	 * 
	 * @param accountInfo
	 * @param startDate
	 * @param endDate
	 * @param staffIds
	 * @return
	 * @throws Exception
	 */
	public List<AccountInfoValue> queryAccountInfo1(
			AccountInfoValue accountInfo, String startDate, String endDate,
			String staffIds) throws Exception;
	public int getTotalNumber();
	
	public List<AccountInfoValue> queryAccountInfo(Integer year, Integer month , Integer inOrOut)throws Exception;
}
